var GFMainWindow = GFWindow.extend({
	selchg_handler: null,
	TYPE_DISABLED: 0,
	TYPE_AVAILABLE: 1,
	TYPE_DOWNLOAD: 2,
	constructor: function(behavior,content,selchg_handler)
	{
		this.base(behavior,false,content);
		this.selchg_handler = selchg_handler;
	},
	CreateExtensionDIV: function(id,class_name,width,height,content)
	{
	},
	DestroyExtensionDIV: function(id)
	{
	},
	GetSelect: function()
	{
	},
	AddSelectOption: function(text,value,type)
	{
	},
	ReplaceSelectOption: function(old_value,text,value,type)
	{
	},
	SelectOption: function(value)
	{
	},
	GetPreedit: function()
	{
	},
	SetPreedit: function()
	{
	},
	ResetPreedit: function()
	{
	},
	SetPreeditText: function(str)
	{
	},
	DeletePreedit: function(c)
	{
	},
	AppendPreedit: function(c)
	{
	},
	SetPreeditInvalid: function()
	{
	}
});

var GFCandidateListWindow = GFWindow.extend({
	constructor: function(behavior,content)
	{
		this.base(behavior,true,content);
	},
	GetCandiadateObject: function(i)
	{
	},
	SetCandidate: function(i,str)
	{
	}
});

var GownFullObjectHandler = Base.extend({
	sendstr_id_handler: {},
	sendstr_nodeName_handler: {},
	constructor: function()
	{
	},
	SendString: function(obj,str)
	{
		var handler;

		handler = null;
		// check if there is a id
		if(obj.id && this.sendstr_id_handler[obj.id]) handler = this.sendstr_id_handler[obj.id];
		if(!handler && obj.nodeName) { 
			var nodename = obj.nodeName.toLowerCase();
			handler = this.sendstr_nodeName_handler[nodename];
		}
		if(!handler) {
			Debug.trace(0,'GownFullObjectHandler: no object handler exists for this object (nodeName=%s).',obj.nodeName);
			return false; // no handler exist
		}

		return handler(obj,str);
	}
});

var GownFullBuilder = Base.extend({
	keydown_handler: null,
	keyup_handler: null,
	keypress_handler: null,
	SetHandler: function(keydown_handler,keyup_handler,keypress_handler)
	{
		this.keydown_handler = keydown_handler;
		this.keyup_handler = keyup_handler;
		this.keypress_handler = keypress_handler;
	},
	constructor: function()
	{
	},
	BuildObjectHandler: function()
	{
	},
	BuildCSS: function()
	{
	},
	BuildMainWindow: function()
	{
	},
	BuildCandidateListWindow: function()
	{
	},
	PostCreateGownFull: function()
	{
	},
	AttachHandler: function(obj)
	{
		return false;
	}
});
